#ifndef CHASE_CAMERA_CONTROL____
#define CHASE_CAMERA_CONTROL____

class ChaseCameraControl;

#include "CameraControl.h"

/*
 * Base class for all camera that "chase" the ball
 */
class ChaseCameraControl : public CameraControl
{
private:
    Ogre::Radian yaw_speed, initial_yaw;
    float MIN_SCALE;

protected:
    Ogre::Vector3 position, l_offset;
    virtual void updateScale(float) = 0;
    float position_scale, zoom;
    OgreNewt::World *ogre_newt;
    
public:
    ChaseCameraControl(Ogre::Viewport *m_v, Ogre::Viewport *l_v, Ogre::Viewport *r_v,
        Ogre::SceneManager *sm, Ogre::String prefix);
    ~ChaseCameraControl();
    
    void setSceneNode(Ogre::SceneNode *node) { main_node = node; }
    void registerPlayer(Player *p, OgreNewt::World *og);
    void updateCamera(Ogre::Real time);
    virtual void reset();
} ;

#endif
